<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 对象的遍历
    使用 for...in 遍历
    循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作
    for...in 语句用于对数组或者对象属性进行循环操作
    语法如下:
    for(变量 in 对象名字){
        循环体(执行代码)
    } 
    语法中变量是自定义的,它需要符合命名规范规范,通常我们会将这个变量写为k 或者key
    */
    var obj = {
        name: '张三',
        age: 18,
        sex: '男',
        f1: function () {
            console.log('我是方法f1');
        }
    }
    // for (var key in obj) {
    //     console.log(key);//输入对象中所有的键
    //     console.log(obj[key]);//输入键对应的值
    // }

    /* js中可以将对象分为'内部对象','宿主对象'和'自定义对象'三种
      1.内部对象:分为本地对象和内置对象 ;
        本地对象:Number,String.Boolean,Array,Function,Date,Object,RegExp,Error等;
        内置对象:Glabal和Math,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象;
        内置对象定义为由ECMAScript实现提供的,ECMAScript程序开始执行时出现,
        意味着开发者不必明确实例化内置对象,它已经被实例化了
      2.宿主对象:执行js脚本的环境提供的对象,对于嵌入到网页中的js来说,
        其宿主对象就是浏览器提供的对象,如IE,Firefox等浏览器提供的对象,
        不同的浏览器提供的宿主对象可能不同,即使提供相同的对象,其实方式也大相径庭,
        这会带来浏览器的兼容问题,增加开发难度,浏览器对象有很多种,如Window,Document等
      3.自定义对象,开发人员自己定义的对象,js允许使用自定义对象,是js得到扩充  */

    //数组对象
    //字面量(直接法)
    var arr = [1, 2, 3];
    var arr1 = new Array();
    /* 注意:上面代码中arr1创建出的是一个空数组,如果需要使用构造函数创建非空数组,
    那么可以在创建时给构造函数填入参数
    参数传递规则如下:
    如果只传入一个参数(正整数),则参数规定了数组的长度
    如果传入多个参数,则参数为数组的元素 */

    /* 数组对象的方法 
    sort():对数组元素进行排序的,默认是升序,会改变原数组
    参数:规定排序规则,默认是按照字母升序排(按照字符串Unicode编码)
    返回值:排序后的新数组
     */
    var arr2 = [52, 91, 24, 35, 66, 88, 44, 1, 7];
    arr2.sort(function (a, b) {
        return a - b;//升序:结果为负调换位置,为正保持不变
        //return b-a;//降序:结果为负调换位置,为正保持不变
    });
    console.log(arr2);
</script>

</html>